def test_feature_generation():
    """Compare generated features to reference values."""
    this_dir = os.path.join(os.path.dirname(__file__))
    test_files = [
            os.path.join(this_dir, 'data/257141.dat'),
            os.path.join(this_dir, 'data/245486.dat'),
            os.path.join(this_dir, 'data/247327.dat'),
            ]
    features_extracted = None
    values_computed = None
    for i, ts_data_file_path in enumerate(test_files):
        t, m, e = data_management.parse_ts_data(ts_data_file_path)
        features = sft.generate_science_features(t, m, e)
        sorted_features = sorted(features.items())
        if features_extracted is None:
            features_extracted = [f[0] for f in sorted_features]
            values_computed = np.zeros((len(test_files),
                len(features_extracted)))
        values_computed[i,:] = [f[1] for f in sorted_features]

    def features_from_csv(filename):
        with open(filename) as f:
            feature_names = f.readline().strip().split(",")
            feature_values = np.loadtxt(f, delimiter=',')

        return feature_names, feature_values

    this_dir = os.path.join(os.path.dirname(__file__))
    features_expected, values_expected = features_from_csv(
        os.path.join(this_dir, "data/expected_features.csv"))

    npt.assert_equal(features_extracted, features_expected)
    npt.assert_array_almost_equal(values_computed, values_expected)
Esempio n. 2
0
def test_generate_custom_features():
    """Test main generate custom features function"""
    t, m, e = data_management.parse_ts_data(pjoin(DATA_DIR,
                                                  "dotastro_215153.dat"))
    feats = cft.generate_custom_features(pjoin(APP_DATA_DIR, "testfeature1.py"),
                                         t, m, e, use_docker=USE_DOCKER)
    npt.assert_almost_equal(feats["avg_mag"], 10.347417647058824)
Esempio n. 3
0
def test_feature_generation():
    """Compare generated features to reference values."""
    this_dir = os.path.join(os.path.dirname(__file__))
    test_files = [
        os.path.join(this_dir, 'data/257141.dat'),
        os.path.join(this_dir, 'data/245486.dat'),
        os.path.join(this_dir, 'data/247327.dat'),
    ]
    features_extracted = None
    values_computed = None
    for i, ts_data_file_path in enumerate(test_files):
        t, m, e = data_management.parse_ts_data(ts_data_file_path)
        features = generate_features(t, m, e, SCIENCE_FEATS)
        sorted_features = sorted(features.items())
        if features_extracted is None:
            features_extracted = [f[0] for f in sorted_features]
            values_computed = np.zeros(
                (len(test_files), len(features_extracted)))
        values_computed[i, :] = [f[1] for f in sorted_features]

    def features_from_csv(filename):
        with open(filename) as f:
            feature_names = f.readline().strip().split(",")
            feature_values = np.loadtxt(f, delimiter=',')

        return feature_names, feature_values

    this_dir = os.path.join(os.path.dirname(__file__))
    features_expected, values_expected = features_from_csv(
        os.path.join(this_dir, "data/expected_features.csv"))

    npt.assert_equal(features_extracted, features_expected)
    npt.assert_array_almost_equal(values_computed, values_expected)
Esempio n. 4
0
def test_docker_extract_features():
    """Test main Docker extract features method"""
    script_fpath = pjoin(APP_DATA_DIR, "testfeature1.py")
    ts_datafile = pjoin(DATA_DIR, "dotastro_215153.dat")
    t, m, e = data_management.parse_ts_data(ts_datafile)
    feats_known_dict = {'t': list(t), 'm': list(m), 'e': list(e)}
    results = cft.docker_extract_features(script_fpath, feats_known_dict)
    assert (isinstance(results, dict))
    npt.assert_almost_equal(results["avg_mag"], 10.347417647058824)
Esempio n. 5
0
def test_docker_extract_features():
    """Test main Docker extract features method"""
    script_fpath = pjoin(APP_DATA_DIR, "testfeature1.py")
    ts_datafile = pjoin(DATA_DIR, "dotastro_215153.dat")
    t, m, e = data_management.parse_ts_data(ts_datafile)
    feats_known_dict = {'t': list(t), 'm': list(m), 'e': list(e)}
    results = cft.docker_extract_features(script_fpath, feats_known_dict)
    assert(isinstance(results, dict))
    npt.assert_almost_equal(results["avg_mag"], 10.347417647058824)
Esempio n. 6
0
def test_generate_custom_features():
    """Test main generate custom features function"""
    t, m, e = data_management.parse_ts_data(
        pjoin(DATA_DIR, "dotastro_215153.dat"))
    feats = cft.generate_custom_features(pjoin(APP_DATA_DIR,
                                               "testfeature1.py"),
                                         t,
                                         m,
                                         e,
                                         use_docker=USE_DOCKER)
    npt.assert_almost_equal(feats["avg_mag"], 10.347417647058824)
Esempio n. 7
0
def test_parse_ts_data(tmpdir):
    """Test time series data file parsing."""
    to_str = lambda X: StringIO('\n'.join([','.join(row)
                                           for row in X.astype(str).tolist()]))
    values = np.random.random((10, 3))

    t, m, e = data_management.parse_ts_data(to_str(values))
    npt.assert_allclose(t, values[:, 0])
    npt.assert_allclose(m, values[:, 1])
    npt.assert_allclose(e, values[:, 2])

    t, m, e = data_management.parse_ts_data(to_str(values[:, :2]))
    npt.assert_allclose(t, values[:, 0])
    npt.assert_allclose(m, values[:, 1])
    npt.assert_allclose(e[1:], e[:-1])  # constant

    t, m, e = data_management.parse_ts_data(to_str(values[:, :1]))
    npt.assert_allclose(np.diff(t), 1. / (len(values) - 1))
    npt.assert_allclose(m, values[:, 0])
    npt.assert_allclose(e[1:], e[:-1])  # constant

    with pytest.raises(ValueError):
        data_management.parse_ts_data(to_str(values[:, []]))
Esempio n. 8
0
def test_parse_ts_data(tmpdir):
    """Test time series data file parsing."""
    to_str = lambda X: StringIO('\n'.join(
        [','.join(row) for row in X.astype(str).tolist()]))
    values = np.random.random((10, 3))

    t, m, e = data_management.parse_ts_data(to_str(values))
    npt.assert_allclose(t, values[:, 0])
    npt.assert_allclose(m, values[:, 1])
    npt.assert_allclose(e, values[:, 2])

    t, m, e = data_management.parse_ts_data(to_str(values[:, :2]))
    npt.assert_allclose(t, values[:, 0])
    npt.assert_allclose(m, values[:, 1])
    npt.assert_allclose(e[1:], e[:-1])  # constant

    t, m, e = data_management.parse_ts_data(to_str(values[:, :1]))
    npt.assert_allclose(np.diff(t), 1. / (len(values) - 1))
    npt.assert_allclose(m, values[:, 0])
    npt.assert_allclose(e[1:], e[:-1])  # constant

    with pytest.raises(ValueError):
        data_management.parse_ts_data(to_str(values[:, []]))
def test_parse_ts_data():
    """Test time series data file parsing."""
    t, m, e = data_management.parse_ts_data(pjoin(DATA_PATH,
                                                  "dotastro_215153.dat"))
    assert t.ndim == 1
    assert len(t) == len(m) and len(m) == len(e)
Esempio n. 10
0
def test_parse_ts_data():
    """Test time series data file parsing."""
    t, m, e = data_management.parse_ts_data(
        pjoin(DATA_PATH, "dotastro_215153.dat"))
    assert t.ndim == 1
    assert len(t) == len(m) and len(m) == len(e)