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)
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)
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)
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)
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)
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)
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(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)
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)