Example #1
0
    def test_log_mpl_plotly(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.CHART))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.CHART))
            is False
        )

        figure, axes = plt.figure(), plt.gca()
        circle1 = plt.Circle((0.2, 0.5), 0.2, color="r")
        circle2 = plt.Circle((0.8, 0.5), 0.2, color="g")
        axes.add_patch(circle1)
        axes.add_patch(circle2)
        plt.axis("scaled")
        plt.tight_layout()

        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_mpl_plotly_chart(name="figure", figure=figure, step=1)
        assert log_dashboard.call_count == 1

        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.CHART))
            is False
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.CHART))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.CHART, name="figure"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 1

        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_mpl_plotly_chart(name="figure", figure=figure, step=2)
        assert log_dashboard.call_count == 1
        assert plt.fignum_exists(figure.number) is False

        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.CHART))
            is False
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.CHART))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.CHART, name="figure"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 2
Example #2
0
    def test_log_mpl_image(self):
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is False)

        figure, axes = plt.figure(), plt.gca()
        circle1 = plt.Circle((0.2, 0.5), 0.2, color="r")
        circle2 = plt.Circle((0.8, 0.5), 0.2, color="g")
        axes.add_patch(circle1)
        axes.add_patch(circle2)
        plt.axis("scaled")
        plt.tight_layout()

        self.run.log_mpl_image(name="figure", data=figure, step=1, close=False)
        assert plt.fignum_exists(figure.number) is True

        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.IMAGE,
                                     name="figure")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.IMAGE,
                                    name="figure",
                                    step=1,
                                    ext="png")
        assert os.path.exists(asset_file) is True

        self.run.log_mpl_image(name="figure", data=figure, step=2)
        assert plt.fignum_exists(figure.number) is False

        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.IMAGE,
                                     name="figure")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 2

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.IMAGE,
                                    name="figure",
                                    step=1,
                                    ext="png")
        assert os.path.exists(asset_file) is True
Example #3
0
    def test_log_mpl_images(self):
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is False)

        figures = []
        for i in range(5):
            figure = plt.figure()
            plt.plot([i * 1, i * 2, i * 3], label="Plot " + str(i))
            plt.xlabel("X")
            plt.xlabel("Y")
            plt.legend()
            plt.tight_layout()
            figures.append(figure)

        self.run.log_mpl_image(name="figure",
                               data=figures,
                               step=1,
                               close=False)
        assert all(
            [plt.fignum_exists(figure.number) is True for figure in figures])

        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.IMAGE,
                                     name="figure")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 1

        self.run.log_mpl_image(name="figure", data=figures, step=2)
        assert all(
            [plt.fignum_exists(figure.number) is False for figure in figures])

        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.IMAGE,
                                     name="figure")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="figure", data=events_file)
        assert len(results.df.values) == 2

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.IMAGE,
                                    name="figure",
                                    step=1,
                                    ext="png")
        assert os.path.exists(asset_file) is True
Example #4
0
    def test_download_html_events_as_dict(self):
        filepath1 = os.path.join(settings.CLIENT_CONFIG.archive_root, "uuid",
                                 "events", "html", "html1.plx")
        filepath2 = os.path.join(settings.CLIENT_CONFIG.archive_root, "uuid",
                                 "events", "html", "html2.plx")
        assert os.path.exists(filepath1) is False
        assert os.path.exists(filepath2) is False
        response = self.client.get(self.base_url +
                                   "/html?names=html1&orient=dict")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is False
        events1 = V1Events.read(name="html1",
                                kind=V1ArtifactKind.HTML,
                                data=filepath1,
                                parse_dates=False)
        for res in response.json()["data"]:
            assert isinstance(res["data"], dict)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        assert results[0].name == events1.name
        assert results[0].kind == events1.kind
        assert pd.DataFrame.equals(results[0].df, events1.df)

        response = self.client.get(self.base_url +
                                   "/html?names=html1,html2&orient=dict")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is True
        events2 = V1Events.read(name="html2",
                                kind=V1ArtifactKind.HTML,
                                data=filepath2,
                                parse_dates=False)
        for res in response.json()["data"]:
            assert isinstance(res["data"], dict)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        expected = {events1.name: events1, events2.name: events2}
        for res in results:
            exp = expected[res.name]
            assert res.name == exp.name
            assert res.kind == exp.kind
            assert pd.DataFrame.equals(res.df, exp.df)

        response = self.client.get(self.base_url +
                                   "/html?names=text1,html1,html2&orient=dict")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is True
        for res in response.json()["data"]:
            assert isinstance(res["data"], dict)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        expected = {events1.name: events1, events2.name: events2}
        for res in results:
            exp = expected[res.name]
            assert res.name == exp.name
            assert res.kind == exp.kind
            assert pd.DataFrame.equals(res.df, exp.df)
Example #5
0
    def test_download_text_events_as_csv(self):
        filepath1 = os.path.join(settings.CLIENT_CONFIG.archive_root, "uuid",
                                 "events", "text", "text1.plx")
        filepath2 = os.path.join(settings.CLIENT_CONFIG.archive_root, "uuid",
                                 "events", "text", "text2.plx")
        assert os.path.exists(filepath1) is False
        assert os.path.exists(filepath2) is False
        response = self.client.get(self.base_url +
                                   "/text?names=text1&orient=csv")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is False
        events1 = V1Events.read(name="text1",
                                kind=V1ArtifactKind.TEXT,
                                data=filepath1)
        for res in response.json()["data"]:
            assert isinstance(res["data"], str)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        assert results[0].name == events1.name
        assert results[0].kind == events1.kind
        assert pd.DataFrame.equals(results[0].df, events1.df)

        response = self.client.get(self.base_url +
                                   "/text?names=text1,text2&orient=csv")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is True
        events2 = V1Events.read(name="text2",
                                kind=V1ArtifactKind.TEXT,
                                data=filepath2)
        for res in response.json()["data"]:
            assert isinstance(res["data"], str)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        expected = {events1.name: events1, events2.name: events2}
        for res in results:
            exp = expected[res.name]
            assert res.name == exp.name
            assert res.kind == exp.kind
            assert pd.DataFrame.equals(res.df, exp.df)

        response = self.client.get(self.base_url +
                                   "/text?names=text1,text2,text3&orient=csv")
        assert response.status_code == 200
        assert os.path.exists(filepath1) is True
        assert os.path.exists(filepath2) is True
        for res in response.json()["data"]:
            assert isinstance(res["data"], str)
        results = [V1Events.read(**i) for i in response.json()["data"]]
        expected = {events1.name: events1, events2.name: events2}
        for res in results:
            exp = expected[res.name]
            assert res.name == exp.name
            assert res.kind == exp.kind
            assert pd.DataFrame.equals(res.df, exp.df)
Example #6
0
    def test_log_charts(self):
        x = [1, 2, 3, 4, 5]
        y = [6, 7, 2, 4, 5]
        bokeh_test = figure(title="simple line example",
                            x_axis_label="x",
                            y_axis_label="y")
        bokeh_test.line(x, y, line_width=2)

        x1 = np.random.randn(200) - 2
        x2 = np.random.randn(200)
        x3 = np.random.randn(200) + 2
        hist_data = [x1, x2, x3]
        group_labels = ["Group 1", "Group 2", "Group 3"]
        plotly_test = figure_factory.create_distplot(hist_data,
                                                     group_labels,
                                                     bin_size=[0.1, 0.25, 0.5])

        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.CHART)) is False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.CHART)) is False)
        self.run.log_bokeh_chart(name="bokeh_test", figure=bokeh_test, step=1)
        self.run.log_plotly_chart(name="plotly_test",
                                  figure=plotly_test,
                                  step=1)
        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.CHART)) is False)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.CHART)) is True)

        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.CHART,
                                     name="bokeh_test")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind=V1ArtifactKind.CHART,
                                name="bokeh_test",
                                data=events_file)
        assert len(results.df.values) == 1

        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.CHART,
                                     name="plotly_test")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind=V1ArtifactKind.CHART,
                                name="plotly_test",
                                data=events_file)
        assert len(results.df.values) == 1
Example #7
0
async def process_operation_event(
    events_path: str,
    event_kind: str,
    event_name: str,
    orient: str = V1Events.ORIENT_CSV,
) -> Optional[Dict]:
    if not events_path or not os.path.exists(events_path):
        return None

    async with aiofiles.open(events_path, mode="r") as f:
        contents = await f.read()
        if contents:
            if orient == V1Events.ORIENT_CSV:
                return {
                    "name": event_name,
                    "kind": event_kind,
                    "data": contents
                }
            if orient == V1Events.ORIENT_DICT:
                df = V1Events.read(kind=event_kind,
                                   name=event_name,
                                   data=contents,
                                   parse_dates=False)
                return {
                    "name": event_name,
                    "kind": event_kind,
                    "data": df.to_dict()
                }
            else:
                raise HTTPException(
                    detail="received an unrecognisable orient value {}.".
                    format(orient),
                    status_code=status.HTTP_400_BAD_REQUEST,
                )
    return None
Example #8
0
 def test_images_read_yaml(self):
     values = [
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:24:57"),
             image=V1EventImage(path="test"),
             step=12,
         ),
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:25:57"),
             image=V1EventImage(height=1, width=1),
             step=13,
         ),
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:26:57"),
             image=V1EventImage(height=10, width=10, colorspace=2),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="image",
         data=os.path.abspath("tests/fixtures/polyboard/image/image_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #9
0
 def test_audios_read_yaml(self):
     values = [
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:24:57"),
             audio=V1EventAudio(
                 sample_rate=1.1, num_channels=2, length_frames=2, path="test"
             ),
             step=12,
         ),
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:25:57"),
             audio=V1EventAudio(
                 sample_rate=1.11,
                 num_channels=22,
                 length_frames=22,
                 path="test",
                 content_type="wav",
             ),
             step=13,
         ),
         V1Event(
             timestamp=parse_datetime("2018-12-11 10:26:57"),
             audio=V1EventAudio(path="testwave", content_type="wav"),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="audio",
         data=os.path.abspath("tests/fixtures/polyboard/audio/audio_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #10
0
    def test_log_model_dir(self):
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.MODEL)) is False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.MODEL)) is False)
        model_dir = tempfile.mkdtemp() + "/model"
        create_path(model_dir)
        model_file = model_dir + "/model.pkl"
        self.touch(model_file)
        weights_file = model_dir + "/weights"
        self.touch(weights_file)
        configs_file = model_dir + "/configs"
        self.touch(configs_file)
        self.run.log_model(name="my_model",
                           path=model_dir,
                           framework="tensorflow")
        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.MODEL)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.MODEL)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.MODEL,
                                     name="my_model")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="model",
                                name="my_model",
                                data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.MODEL,
                                    name="my_model")
        assert os.path.exists(asset_file) is True
Example #11
0
 def test_log_single_metric(self):
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.METRIC))
         is False
     )
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.METRIC))
         is False
     )
     with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
         self.run.log_metrics(step=1, metric1=1.1)
     assert log_dashboard.call_count == 1
     self.event_logger.flush()
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.METRIC))
         is False
     )
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.METRIC))
         is True
     )
     events_file = get_event_path(
         self.run_path, kind=V1ArtifactKind.METRIC, name="metric1"
     )
     assert os.path.exists(events_file) is True
     results = V1Events.read(kind="metric", name="metric1", data=events_file)
     assert len(results.df.values) == 1
Example #12
0
 def test_htmls_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             html="<div>1</div>",
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             html="<div>2</div>",
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             html="<div>3</div>",
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="html",
         data=os.path.abspath(
             "tests/fixtures/polyboard/html/html_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #13
0
 def test_artifacts_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             artifact=V1EventArtifact(kind="dataframe", path="path1"),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             artifact=V1EventArtifact(kind="tsv", path="path2"),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             artifact=V1EventArtifact(kind="csv", path="path3"),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="artifact",
         data=os.path.abspath(
             "tests/fixtures/polyboard/artifact/artifact_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #14
0
    def test_log_text(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.TEXT))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.TEXT))
            is False
        )
        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_text(name="my_text", text="some text", step=1)
        assert log_dashboard.call_count == 1

        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.TEXT))
            is False
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.TEXT))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.TEXT, name="my_text"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="text", name="my_text", data=events_file)
        assert len(results.df.values) == 1
Example #15
0
 def test_log_html(self):
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HTML))
         is False
     )
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HTML))
         is False
     )
     with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
         self.run.log_html(name="my_div", html="<div>test<div/>", step=1)
     assert log_dashboard.call_count == 1
     self.event_logger.flush()
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HTML))
         is False
     )
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HTML))
         is True
     )
     events_file = get_event_path(
         self.run_path, kind=V1ArtifactKind.HTML, name="my_div"
     )
     assert os.path.exists(events_file) is True
     results = V1Events.read(kind="html", name="my_div", data=events_file)
     assert len(results.df.values) == 1
Example #16
0
    def test_log_video_from_path(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.VIDEO))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.VIDEO))
            is False
        )
        video_file = tempfile.mkdtemp() + "/video.gif"
        self.touch(video_file)
        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_video(name="my_video", data=video_file)
        assert log_dashboard.call_count == 1
        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.VIDEO))
            is True
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.VIDEO))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.VIDEO, name="my_video"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="video", name="my_video", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(
            self.run_path, kind=V1ArtifactKind.VIDEO, name="my_video", ext="gif"
        )
        assert os.path.exists(asset_file) is True
Example #17
0
    def test_log_data_audio(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.AUDIO))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.AUDIO))
            is False
        )
        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_audio(name="my_audio", data=tensor_np(shape=(42,)))
        assert log_dashboard.call_count == 1
        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.AUDIO))
            is True
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.AUDIO))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.AUDIO, name="my_audio"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="audio", name="my_audio", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(
            self.run_path, kind=V1ArtifactKind.AUDIO, name="my_audio", ext="wav"
        )
        assert os.path.exists(asset_file) is True
Example #18
0
    def test_log_artifact(self):
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.TSV)) is False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.TSV)) is False)
        tsv_file = tempfile.mkdtemp() + "/file.tsv"
        self.touch(tsv_file)
        self.run.log_artifact(name="file",
                              path=tsv_file,
                              artifact_kind=V1ArtifactKind.TSV)
        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.TSV)) is True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.TSV)) is True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.TSV,
                                     name="file")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind=V1ArtifactKind.TSV,
                                name="file",
                                data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.TSV,
                                    name="file",
                                    ext="tsv")
        assert os.path.exists(asset_file) is True
Example #19
0
    def test_log_data_image(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is False
        )
        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_image(
                name="my_image", data=tensor_np(shape=(1, 8, 8)), dataformats="CHW"
            )
        assert log_dashboard.call_count == 1
        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is True
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.IMAGE, name="my_image"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="my_image", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(
            self.run_path, kind=V1ArtifactKind.IMAGE, name="my_image", ext="png"
        )
        assert os.path.exists(asset_file) is True
Example #20
0
    def test_log_image_from_path_with_step(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is False
        )
        image_file = tempfile.mkdtemp() + "/file.png"
        self.touch(image_file)
        with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
            self.run.log_image(name="my_image", data=image_file, step=1)
        assert log_dashboard.call_count == 1
        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is True
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.IMAGE))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.IMAGE, name="my_image"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="image", name="my_image", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(
            self.run_path, kind=V1ArtifactKind.IMAGE, name="my_image", step=1, ext="png"
        )
        assert os.path.exists(asset_file) is True
Example #21
0
 def test_histograms_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             histogram=V1EventHistogram(values=[10], counts=[1]),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             histogram=V1EventHistogram(values=[10, 1, 1], counts=[1, 1,
                                                                   1]),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             histogram=V1EventHistogram(values=[10, 112, 12, 1],
                                        counts=[12, 1, 1, 1]),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="histogram",
         data=os.path.abspath(
             "tests/fixtures/polyboard/histogram/histogram_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #22
0
    def test_log_dataframe(self):
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.DATAFRAME)) is
                False)
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.DATAFRAME)) is
                False)
        model_file = tempfile.mkdtemp() + "/df.pkl"
        self.touch(model_file)
        self.run.log_dataframe(name="dataframe",
                               path=model_file,
                               content_type="pickel")
        self.event_logger.flush()
        assert (os.path.exists(
            get_asset_path(self.run_path, kind=V1ArtifactKind.DATAFRAME)) is
                True)
        assert (os.path.exists(
            get_event_path(self.run_path, kind=V1ArtifactKind.DATAFRAME)) is
                True)
        events_file = get_event_path(self.run_path,
                                     kind=V1ArtifactKind.DATAFRAME,
                                     name="dataframe")
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="dataframe",
                                name="dataframe",
                                data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(self.run_path,
                                    kind=V1ArtifactKind.DATAFRAME,
                                    name="dataframe",
                                    ext="pkl")
        assert os.path.exists(asset_file) is True
Example #23
0
 def test_videos_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             video=V1EventVideo(path="test", content_type="mp4"),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             video=V1EventVideo(height=1, width=1),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             video=V1EventVideo(height=10, width=10, colorspace=2),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="video",
         data=os.path.abspath(
             "tests/fixtures/polyboard/video/video_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #24
0
 def test_log_np_histogram(self):
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     values, counts = np.histogram(np.random.randint(255, size=(1000,)))
     with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
         self.run.log_np_histogram(
             name="histo", values=values, counts=counts, step=1
         )
     assert log_dashboard.call_count == 1
     self.event_logger.flush()
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is True
     )
     events_file = get_event_path(
         self.run_path, kind=V1ArtifactKind.HISTOGRAM, name="histo"
     )
     assert os.path.exists(events_file) is True
     results = V1Events.read(kind="histogram", name="histo", data=events_file)
     assert len(results.df.values) == 1
Example #25
0
 def test_charts_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             chart=V1EventChart(kind="plotly", figure={"foo": "bar"}),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             chart=V1EventChart(kind="vega", figure={"foo2": "bar2"}),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             chart=V1EventChart(kind="bokeh", figure={"foo3": "bar3"}),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="chart",
         data=os.path.abspath(
             "tests/fixtures/polyboard/chart/chart_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #26
0
    def test_log_model_file(self):
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.MODEL))
            is False
        )
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.MODEL))
            is False
        )
        model_file = tempfile.mkdtemp() + "model.pkl"
        self.touch(model_file)
        with patch("polyaxon.tracking.run.Run._log_has_model") as log_model:
            self.run.log_model(name="my_model", path=model_file, framework="scikit")
        assert log_model.call_count == 1
        self.event_logger.flush()
        assert (
            os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.MODEL))
            is True
        )
        assert (
            os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.MODEL))
            is True
        )
        events_file = get_event_path(
            self.run_path, kind=V1ArtifactKind.MODEL, name="my_model"
        )
        assert os.path.exists(events_file) is True
        results = V1Events.read(kind="model", name="my_model", data=events_file)
        assert len(results.df.values) == 1

        asset_file = get_asset_path(
            self.run_path, kind=V1ArtifactKind.MODEL, name="my_model", ext="pkl"
        )
        assert os.path.exists(asset_file) is True
Example #27
0
 def test_dataframes_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             dataframe=V1EventDataframe(path="path1",
                                        content_type="parquet"),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             dataframe=V1EventDataframe(path="path2",
                                        content_type="pickle"),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             dataframe=V1EventDataframe(path="path3"),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="dataframe",
         data=os.path.abspath(
             "tests/fixtures/polyboard/dataframe/dataframe_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()
Example #28
0
 def test_histograms_summaries(self):
     summaries, last_values = sync_events_summaries(
         events_path="tests/fixtures/polyboard",
         events_kind="histogram",
         last_check=None,
     )
     events = V1Events.read(
         name="histogram_events",
         kind="histogram",
         data=os.path.abspath(
             "tests/fixtures/polyboard/histogram/histogram_events.plx"),
     )
     assert events.name == "histogram_events"
     assert summaries == [
         V1RunArtifact(
             name="histogram_events",
             kind="histogram",
             connection=None,
             summary=events.get_summary(),
             path=os.path.relpath(
                 "tests/fixtures/polyboard/histogram/histogram_events.plx",
                 CONTEXT_MOUNT_ARTIFACTS,
             ),
             is_input=False,
         )
     ]
     assert last_values == {}
Example #29
0
 def test_log_histogram(self):
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     with patch("polyaxon.tracking.run.Run._log_has_events") as log_dashboard:
         self.run.log_histogram(
             name="histo", values=tensor_np(shape=(1024,)), bins="auto", step=1
         )
         self.run.log_histogram(
             name="histo", values=tensor_np(shape=(1024,)), bins="fd", step=1
         )
         self.run.log_histogram(
             name="histo", values=tensor_np(shape=(1024,)), bins="doane", step=1
         )
     assert log_dashboard.call_count == 3
     self.event_logger.flush()
     assert (
         os.path.exists(get_asset_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is False
     )
     assert (
         os.path.exists(get_event_path(self.run_path, kind=V1ArtifactKind.HISTOGRAM))
         is True
     )
     events_file = get_event_path(
         self.run_path, kind=V1ArtifactKind.HISTOGRAM, name="histo"
     )
     assert os.path.exists(events_file) is True
     results = V1Events.read(kind="histogram", name="histo", data=events_file)
     assert len(results.df.values) == 3
Example #30
0
 def test_models_read_yaml(self):
     values = [
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:24:57"),
             model=V1EventModel(framework="tensorflow", path="path1"),
             step=12,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:25:57"),
             model=V1EventModel(framework="pytorch", path="path2"),
             step=13,
         ),
         V1Event(
             timestamp=dt_parser.parse("2018-12-11 10:26:57"),
             model=V1EventModel(framework="onnx", path="path3"),
             step=14,
         ),
     ]
     events = V1Events.read(
         name="foo",
         kind="model",
         data=os.path.abspath("tests/fixtures/polyboard/model/model_events.plx"),
     )
     assert events.name == "foo"
     assert len(events.df.values) == 3
     for i in range(3):
         assert events.get_event_at(i).to_dict() == values[i].to_dict()