def test_PointDict_auto_file(tmpdir, fext): test_path = tmpdir.mkdir("sub").join("test{}".format(fext)) test_path_str = str(test_path) raws = [{ "one": (0., 0.), "two": (1., 1.), "three": (2., 2.) }, { "one": (0., 0., 0.), "two": (1., 1., 1.), "three": (2., 2., 2.) }] ztests = [False, True] for raw, ztest in zip(raws, ztests): meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = PointDict() fout_factory = InterfaceFactory(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = test.get_data(raw, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert result["one"].x == 0. assert result["two"].y == 1. assert result["one"].has_z == ztest
def test_TimeTable_auto_file(tmpdir, fext): test_path = tmpdir.mkdir("sub").join("test{}".format(fext)) test_path_str = str(test_path) 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(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = test.get_data(raw, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert "a" in result assert len(result) == len(dates) assert len(result.resample('D').mean()) == 2
def test_PolygonDict_auto_file(tmpdir, fext): test_path = tmpdir.mkdir("sub").join("test{}".format(fext)) test_path_str = str(test_path) raws = [{ "block 1": [(0., 0.), (1., 1.), (2., 2.)], "block 2": [(10., 10.), (11., 11.), (12., 12.)] }, { "block 1": [(0., 0., 0.), (1., 1., 1.), (2., 2., 2.)], "block 2": [(10., 10., 10.), (11., 11., 11.), (12., 12., 12.)] }] ztests = [False, True] for raw, ztest in zip(raws, ztests): 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 = test.get_data(raw, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert result["block 1"].exterior.coords[0][0] == 0. assert result["block 2"].exterior.coords[2][1] == 12. assert result["block 1"].has_z == ztest
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_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_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_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_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_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_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_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
def test_XGrid2D_auto_plot(tmpdir): raw = {"values": np.random.randn(2, 3), "coords": [['a', 'b'], [-2, 0, 2]]} meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test", "labels": ['x', 'y'], "units": ['\sum_{n=1}^{\infty} 2^{-n} = 1', 'm', 'POWER!'] }) test = XGrid2D() 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_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_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_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_NumpyLineDictArrayColumn_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", "labels": ["Name", "f(x)"], "tables": ["mock.mock", "name", "f"] }) test = NumpyLineDictArrayColumn() 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_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_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_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_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_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_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_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_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_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_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_TimeSeries_auto_file(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 = [(d, v) for d, v in zip(dates, values)] test_path = tmpdir.mkdir("sub").join("test.csv") test_path_str = str(test_path) meta = CoreMetaData({"identifier": "test", "structure": "test", "title": "test", "labels": ['mass'], "units": ["kg"]}) test = TimeSeries() fout_factory = InterfaceFactory(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = test.get_data(raw, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert len(result) == len(dates) assert len(result.resample('D').mean()) == 2
def test_HistogramDict_auto_file(tmpdir, fext): test_path = tmpdir.mkdir("sub").join("test{}".format(fext)) test_path_str = str(test_path) 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(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = test.get_data(values_dict, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert len(result["test_one"]["values"]) == len(values_one) assert len(result["test_two"]["bins"]) == \ len(result["test_two"]["values"]) + 1
def test_CartesianListDict_auto_file(tmpdir, fext): test_path = tmpdir.mkdir("sub").join("test{}".format(fext)) test_path_str = str(test_path) raws = [{ "a": [(0, 1), (1, 2)], "b": [(3, 4), (4, 5)] }, { "a": [(0, 1, -1), (1, 2, -2)], "b": [(3, 4, -3), (4, 5, -5)] }] for raw in raws: meta = CoreMetaData({ "identifier": "test", "structure": "test", "title": "test" }) test = CartesianListDict() fout_factory = InterfaceFactory(AutoFileOutput) FOutCls = fout_factory(meta, test) fout = FOutCls() fout._path = test_path_str fout.data.result = test.get_data(raw, meta) fout.connect() assert len(tmpdir.listdir()) == 1 fin_factory = InterfaceFactory(AutoFileInput) FInCls = fin_factory(meta, test) fin = FInCls() fin._path = test_path_str fin.connect() result = test.get_data(fin.data.result, meta) assert len(result) == 2 assert result["a"][0][0] == 0 assert result["a"][0][1] == 1