def test_save_all(self):
        """Test saving all."""
        exp_data = self._create_experiment_data()
        exp_data.tags = ["foo", "bar"]
        aresult = AnalysisResult(
            value={},
            name="qiskit_test",
            device_components=self.device_components,
            experiment_id=exp_data.experiment_id,
        )
        exp_data.add_analysis_results(aresult)
        hello_bytes = str.encode("hello world")
        exp_data.add_figures(hello_bytes, figure_names="hello.svg")
        exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertEqual(["foo", "bar"], rexp.tags)
        self.assertEqual(aresult.result_id, rexp.analysis_results(0).result_id)
        self.assertEqual(hello_bytes, rexp.figure(0))

        exp_data.delete_analysis_result(0)
        exp_data.delete_figure(0)
        with mock.patch("builtins.input", lambda _: "y"):
            exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertRaises(IBMExperimentEntryNotFound, rexp.figure, "hello.svg")
        self.assertRaises(DbExperimentEntryNotFound, rexp.analysis_results,
                          aresult.result_id)
    def test_new_experiment_data(self):
        """Test creating a new experiment data."""
        metadata = {"complex": 2 + 3j, "numpy": np.zeros(2)}
        exp_data = DbExperimentData(
            backend=self.backend,
            experiment_type="qiskit_test",
            tags=["foo", "bar"],
            share_level="hub",
            metadata=metadata,
            notes="some notes",
        )

        job_ids = []
        for _ in range(2):
            job = self._run_circuit()
            exp_data.add_jobs(job)
            job_ids.append(job.job_id())

        exp_data.save()
        self.experiments_to_delete.append(exp_data.experiment_id)

        credentials = self.backend.provider().credentials
        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self._verify_experiment_data(exp_data, rexp)
        self.assertEqual(credentials.hub, rexp.hub)  # pylint: disable=no-member
        self.assertEqual(credentials.group, rexp.group)  # pylint: disable=no-member
        self.assertEqual(credentials.project, rexp.project)  # pylint: disable=no-member
示例#3
0
 def load(cls, experiment_id: str, service: DatabaseService) -> ExperimentData:
     expdata = DbExperimentData.load(experiment_id, service)
     expdata.__class__ = ExperimentData
     expdata._experiment = None
     child_data_ids = expdata.metadata.pop("child_data_ids", [])
     child_data = [ExperimentData.load(child_id, service) for child_id in child_data_ids]
     expdata._set_child_data(child_data)
     return expdata
 def test_delete_analysis_result(self):
     """Test deleting an analysis result."""
     aresult, exp_data = self._create_analysis_result()
     with mock.patch("builtins.input", lambda _: "y"):
         exp_data.delete_analysis_result(0)
         exp_data.save()
     rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
     self.assertRaises(DbExperimentEntryNotFound, rexp.analysis_results,
                       aresult.result_id)
     self.assertRaises(IBMExperimentEntryNotFound,
                       self.experiment.analysis_result, aresult.result_id)
    def test_add_figures_plot(self):
        """Test adding a matplotlib figure."""
        import matplotlib.pyplot as plt
        figure, axes = plt.subplots()
        axes.plot([1, 2, 3])

        exp_data = self._create_experiment_data()
        exp_data.add_figures(figure, save_figure=True)

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertTrue(rexp.figure(0))
    def test_add_figures_file(self):
        """Test adding a figure file."""
        exp_data = self._create_experiment_data()
        hello_bytes = str.encode("hello world")
        file_name = "hello_world.svg"
        self.addCleanup(os.remove, file_name)
        with open(file_name, "wb") as file:
            file.write(hello_bytes)

        exp_data.add_figures(figures=file_name, save_figure=True)
        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertEqual(rexp.figure(0), hello_bytes)
    def test_update_analysis_result(self):
        """Test updating an analysis result."""
        aresult, exp_data = self._create_analysis_result()

        rdata = {"complex": 2 + 3j, "numpy": np.zeros(2)}
        aresult.value = rdata
        aresult.quality = ResultQuality.GOOD
        aresult.verified = True
        aresult.tags = ["foo", "bar"]
        aresult.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        rresult = rexp.analysis_results(0)
        self._verify_analysis_result(aresult, rresult)
    def test_update_experiment_data(self):
        """Test updating an experiment."""
        exp_data = self._create_experiment_data()

        for _ in range(2):
            job = self._run_circuit()
            exp_data.add_jobs(job)
        exp_data.tags = ["foo", "bar"]
        exp_data.share_level = "hub"
        exp_data.notes = "some notes"
        exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self._verify_experiment_data(exp_data, rexp)
    def test_add_figures(self):
        """Test adding a figure to the experiment data."""
        exp_data = self._create_experiment_data()
        hello_bytes = str.encode("hello world")

        sub_tests = ["hello.svg", None]

        for idx, figure_name in enumerate(sub_tests):
            with self.subTest(figure_name=figure_name):
                exp_data.add_figures(figures=hello_bytes,
                                     figure_names=figure_name,
                                     save_figure=True)
                rexp = DbExperimentData.load(exp_data.experiment_id,
                                             self.experiment)
                self.assertEqual(rexp.figure(idx), hello_bytes)
    def load(cls, experiment_id: str,
             service: DatabaseServiceV1) -> "ExperimentData":
        """Load a saved experiment data from a database service.

        Args:
            experiment_id: Experiment ID.
            service: the database service.

        Returns:
            The loaded experiment data.
        """
        expdata = DbExperimentDataV1.load(experiment_id, service)
        expdata.__class__ = ExperimentData
        expdata._experiment = None
        return expdata
    def test_delete_figure(self):
        """Test deleting a figure."""
        exp_data = self._create_experiment_data()
        hello_bytes = str.encode("hello world")
        figure_name = "hello.svg"

        exp_data.add_figures(figures=hello_bytes,
                             figure_names=figure_name,
                             save_figure=True)
        with mock.patch("builtins.input", lambda _: "y"):
            exp_data.delete_figure(0)
            exp_data.save()

        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertRaises(IBMExperimentEntryNotFound, rexp.figure, figure_name)
        self.assertRaises(IBMExperimentEntryNotFound, self.experiment.figure,
                          exp_data.experiment_id, figure_name)
    def test_update_figure(self):
        """Test updating a figure."""
        exp_data = self._create_experiment_data()
        hello_bytes = str.encode("hello world")
        figure_name = "hello.svg"

        exp_data.add_figures(figures=hello_bytes,
                             figure_names=figure_name,
                             save_figure=True)
        self.assertEqual(exp_data.figure(0), hello_bytes)

        friend_bytes = str.encode("hello friend")
        exp_data.add_figures(figures=friend_bytes,
                             figure_names=figure_name,
                             overwrite=True,
                             save_figure=True)
        rexp = DbExperimentData.load(exp_data.experiment_id, self.experiment)
        self.assertEqual(rexp.figure(0), friend_bytes)
        self.assertEqual(rexp.figure(figure_name), friend_bytes)
示例#13
0
 def load_matrix(self, experiment_id):
     exp_data = DbExperimentData.load(
         experiment_id,
         self.backend.provider().service("experiment"))
     self._load_from_exp_data(exp_data)