def test_CartesianData(): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = CartesianData() raw = (0, 1) a = test.get_data(raw, meta) b = test.get_value(a) assert b[0] == 0 assert b[1] == 1 raw = (0, 1, -1) a = test.get_data(raw, meta) b = test.get_value(a) assert b[0] == 0 assert b[1] == 1 assert b[2] == -1 raw = (0, 1, -1, 1) with pytest.raises(ValueError): test.get_data(raw, meta)
def test_LineTable_auto_plot(tmpdir): velocity = [float(x) for x in range(10)] thrust = [2 * float(x) for x in range(10)] power = [3 * float(x) for x in range(10)] raw = {"Velocity": velocity, "Thrust": thrust, "Power": power} meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["Velocity", "Thrust", "Power"], "units": ["m/s", "N", "W"] }) test = LineTable() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(raw, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_TableDataColumn_auto_db(mocker): idx = range(1000) values = np.random.rand(len(idx)) mock_dict = {"index": idx, "a": values, "b": values} mock_df = pd.DataFrame(mock_dict) mocker.patch('dtocean_core.data.definitions.get_table_df', return_value=mock_df, autospec=True) meta = CoreMetaData({"identifier": "test", "structure": "test", "title": "test", "labels": ["index", "a", "b"], "tables": ["mock.mock", "index", "a", "b"]}) test = TableDataColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert "a" in result assert len(result) == len(idx)
def test_NumpyLine_auto_plot(tmpdir): coarse_sample = np.linspace(0., 2 * np.pi, num=5) raw = zip(coarse_sample, np.sin(coarse_sample)) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["x", "f(x)"], "units": ["m", "m^{2}"] }) test = NumpyLine() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(raw, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_Histogram_auto_plot(tmpdir): bin_values = [1, 2, 3, 4, 5] bin_separators = [0, 2, 4, 6, 8, 10] raw = (bin_values, bin_separators) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["x", "f(x)"], "units": [None, "m^{2}"] }) test = Histogram() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(raw, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_TimeTable_auto_plot(tmpdir): dates = [] dt = datetime(2010, 12, 01) end = datetime(2010, 12, 02, 23, 59, 59) step = timedelta(seconds=3600) while dt < end: dates.append(dt) dt += step values = np.random.rand(len(dates)) raw = {"DateTime": dates, "a": values, "b": values} meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["a", "b"], "units": ["kg", None] }) test = TimeTable() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(raw, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_NumpyLineArray_auto_db_none(mocker): mock_list = [None] mocker.patch('dtocean_core.data.definitions.get_one_from_column', return_value=mock_list, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["x", "f(x)"], "units": ["m", "m^{2}"], "tables": ["mock.mock", "f_x"] }) test = NumpyLineArray() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_PolygonDictColumn_auto_db_empty(mocker): mock_lists = [[], []] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "description", "boundary"] }) test = PolygonDictColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_CartesianDictColumn_auto_db(mocker): raws = [{"a": (0, 1), "b": (1, 2)}, {"a": (0, 1, -1), "b": (1, 2, -2)}] for raw in raws: mock_lists = [raw.keys(), raw.values()] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "name", "position"] }) test = CartesianDictColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert result["a"][0] == 0 assert result["a"][1] == 1
def test_PolygonDict_auto_file_output_bad_data(tmpdir): test_path = tmpdir.mkdir("sub").join("test{}".format(".csv")) test_path_str = str(test_path) raw = { "block 1": [(0., 0.), (1., 1.), (2., 2.)], "block 2": [(10., 10.), (11., 11.), (12., 12.)] } meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = PolygonDict() fout_factory = InterfaceFactory(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = raw with pytest.raises(TypeError): fout.connect()
def test_PolygonDict_auto_plot(tmpdir): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) raw = { "block 1": [(0., 0., 0.), (1., 1., 1.), (2., 2., 2.)], "block 2": [(10., 10., 10.), (11., 11., 11.), (12., 12., 12.)] } test = PolygonDict() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(raw, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_TimeSeries(): dates = [] dt = datetime(2010, 12, 01) end = datetime(2010, 12, 02, 23, 59, 59) step = timedelta(seconds=3600) while dt < end: dates.append(dt) dt += step values = np.random.rand(len(dates)) raw = [(d, v) for d, v in zip(dates, values)] meta = CoreMetaData({"identifier": "test", "structure": "test", "title": "test", "labels": ['mass'], "units": ["kg"]}) test = TimeSeries() a = test.get_data(raw, meta) b = test.get_value(a) assert len(b) == len(dates) assert len(b.resample('D').mean()) == 2
def test_TimeSeriesColumn_auto_db_empty(mocker): mock_dict = {"date": [], "time": [], "mass": []} mock_df = pd.DataFrame(mock_dict) mocker.patch('dtocean_core.data.definitions.get_table_df', return_value=mock_df, autospec=True) meta = CoreMetaData({"identifier": "test", "structure": "test", "title": "test", "labels": ['mass'], "units": ["kg"], "tables": ["mock.mock", "date", "time", "mass"]}) test = TimeSeriesColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_XSet3D(): raw = { "values": { "a": np.random.randn(2, 3, 1), "b": np.random.randn(2, 3, 1) }, "coords": [['a', 'b'], [-2, 0, 2], [datetime(2010, 12, 01)]] } meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ['x', 'y', 't', 'a', 'b'], "units": [None, 'm', 's', 'POWER!', None] }) test = XSet3D() a = test.get_data(raw, meta) b = test.get_value(a) assert b["a"].shape == (2, 3, 1) assert b["a"].units == 'POWER!' assert b.t.units == 's'
def test_HistogramDict_auto_plot(tmpdir): test_data_one = np.random.random(10) test_data_two = np.random.random(10) values_one, bins_one = np.histogram(test_data_one) values_two, bins_two = np.histogram(test_data_two) values_dict = { "test_one": (values_one, bins_one), "test_two": (values_two, bins_two) } meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = HistogramDict() fout_factory = InterfaceFactory(AutoPlot) PlotCls = fout_factory(meta, test) plot = PlotCls() plot.data.result = test.get_data(values_dict, meta) plot.meta.result = meta plot.connect() assert len(plt.get_fignums()) == 1 plt.close("all")
def test_CartesianDict(): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = CartesianDict() raw = {"a": (0, 1), "b": (1, 2)} a = test.get_data(raw, meta) b = test.get_value(a) assert b["a"][0] == 0 assert b["a"][1] == 1 raw = {"a": (0, 1, -1), "b": (1, 2, -2)} a = test.get_data(raw, meta) b = test.get_value(a) assert b["a"][0] == 0 assert b["a"][1] == 1 assert b["a"][2] == -1 raw = {"a": (0, 1, -1, 1)} with pytest.raises(ValueError): test.get_data(raw, meta)
def test_HistogramDict(): test_data_one = np.random.random(10) test_data_two = np.random.random(10) values_one, bins_one = np.histogram(test_data_one) values_two, bins_two = np.histogram(test_data_two) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) values_dict = { "test_one": (values_one, bins_one), "test_two": (values_two, bins_two) } test = HistogramDict() a = test.get_data(values_dict, meta) b = test.get_value(a) assert len(b["test_one"]["values"]) == len(values_one) assert len(b["test_two"]["bins"]) == len(b["test_two"]["values"]) + 1
def test_PolygonDataColumn_auto_db(mocker): raws = [ WKTElement("POLYGON ((0 0, 1 0, 1 1, 0 0))"), WKTElement("POLYGON ((0 0 0, 1 0 0, 1 1 0, 0 0 0))") ] for raw in raws: mock_list = [raw] mocker.patch('dtocean_core.data.definitions.get_one_from_column', return_value=mock_list, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "position"] }) test = PolygonDataColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert result.exterior.coords[0][0] == 0. assert result.exterior.coords[1][0] == 1.
def test_TimeTable(): dates = [] dt = datetime(2010, 12, 01) end = datetime(2010, 12, 02, 23, 59, 59) step = timedelta(seconds=3600) while dt < end: dates.append(dt) dt += step values = np.random.rand(len(dates)) raw = {"DateTime": dates, "a": values, "b": values} meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["a", "b"], "units": ["kg", None] }) test = TimeTable() a = test.get_data(raw, meta) b = test.get_value(a) assert "a" in b assert len(b) == len(dates) assert len(b.resample('D').mean()) == 2
def test_PolygonData(): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) raw = [(0., 0.), (1., 1.), (2., 2.)] test = PolygonData() a = test.get_data(raw, meta) b = test.get_value(a) assert b.exterior.coords[0][0] == 0. assert b.exterior.coords[1][1] == 1. raw = [(0., 0., 0.), (1., 1., 1.), (2., 2., 2.)] a = test.get_data(raw, meta) b = test.get_value(a) assert b.exterior.coords[0][0] == 0. assert b.exterior.coords[1][1] == 1. assert b.exterior.coords[2][2] == 2. raw = [(0., 0., 0., 0.), (1., 1., 1., 1.), (2., 2., 2., 2.)] with pytest.raises(ValueError): test.get_data(raw, meta)
def test_NumpyLineColumn_auto_db(mocker): coarse_sample = np.linspace(0., 2 * np.pi, num=5) mock_lists = [coarse_sample, list(np.sin(coarse_sample))] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["x", "f(x)"], "units": ["m", "m^{2}"], "tables": ["mock.mock", "x", "f_x"] }) test = NumpyLineColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert max(result[:, 1]) == 1
def test_PolygonDataColumn_auto_db_none(mocker): mock_list = [None] mocker.patch('dtocean_core.data.definitions.get_one_from_column', return_value=mock_list, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "position"] }) test = PolygonDataColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_HistogramColumn_auto_db_none(mocker): mock_lists = [[None, None], [None, None], [None, None]] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["x", "f(x)"], "units": [None, "m^{2}"], "tables": ["mock.mock", "values", "lower_bounds", "upper_bounds"] }) test = HistogramColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_CartesianListDict(): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = CartesianListDict() raw = {"a": [(0, 1), (1, 2)], "b": [(3, 4), (4, 5)]} a = test.get_data(raw, meta) b = test.get_value(a) assert len(b) == 2 assert b["a"][0][0] == 0 assert b["a"][0][1] == 1 raw = {"a": [(0, 1, -1), (1, 2, -2)], "b": [(3, 4, -3), (4, 5, -5)]} a = test.get_data(raw, meta) b = test.get_value(a) assert len(b) == 2 assert b["a"][0][0] == 0 assert b["a"][0][1] == 1 assert b["a"][0][2] == -1 raw = {"a": [(0, 1, -1, 1)]} with pytest.raises(ValueError): test.get_data(raw, meta)
def test_LineTableColumn_auto_db_none(mocker): thrust = [2 * float(x) for x in range(10)] power = [3 * float(x) for x in range(10)] mock_dict = {"velocity": [None] * 10, "thrust": thrust, "power": power} mock_df = pd.DataFrame(mock_dict) mocker.patch('dtocean_core.data.definitions.get_table_df', return_value=mock_df, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ["Velocity", "Thrust", "Power"], "units": ["m/s", "N", "W"], "tables": ["mock.mock", "velocity", "thrust", "power"] }) test = LineTableColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_SimpleDictColumn_auto_db(mocker): raw = {"a": 0, "b": 1} mock_lists = [raw.keys(), raw.values()] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "name", "position"], "types": ["float"] }) test = SimpleDictColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert result["a"] == 0 assert result["b"] == 1
def test_DateTimeDict_auto_file_input_bad_header(mocker): df_dict = {"Wrong": [1], "Headers": [1]} df = pd.DataFrame(df_dict) mocker.patch('dtocean_core.data.definitions.pd.read_excel', return_value=df, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = DateTimeDict() fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = "file.xlsx" with pytest.raises(ValueError): fin.connect()
def test_SimpleDictColumn_auto_db_none(mocker): mock_lists = [[None, None], [None, None]] mocker.patch('dtocean_core.data.definitions.get_all_from_columns', return_value=mock_lists, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "position"], "types": ["float"] }) test = SimpleDictColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_TableDataColumn_auto_db_none(mocker): mock_dict = {"index": [None, None], "a": [None, None], "b": [None, None]} mock_df = pd.DataFrame(mock_dict) mocker.patch('dtocean_core.data.definitions.get_table_df', return_value=mock_df, autospec=True) meta = CoreMetaData({"identifier": "test", "structure": "test", "title": "test", "labels": ["index", "a", "b"], "tables": ["mock.mock", "index", "a", "b"]}) test = TableDataColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() assert query.data.result is None
def test_CartesianDataColumn_auto_db(mocker): raws = [(0, 1), (0, 1, -1)] for raw in raws: mock_list = [raw] mocker.patch('dtocean_core.data.definitions.get_one_from_column', return_value=mock_list, autospec=True) meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "tables": ["mock.mock", "position"] }) test = CartesianDataColumn() query_factory = InterfaceFactory(AutoQuery) QueryCls = query_factory(meta, test) query = QueryCls() query.meta.result = meta query.connect() result = test.get_data(query.data.result, meta) assert result[0] == 0 assert result[1] == 1