def test_normalize(self): """Test that by adding a normalization node we get a signal between 1 and 1.""" processor = DataProcessor("memory", [SVD(), MinMaxNormalize()]) self.assertFalse(processor.is_trained) processor.train([self.data.data(idx) for idx in [0, 1]]) self.assertTrue(processor.is_trained) # Test processing of all data processed = processor(self.data.data()) np.testing.assert_array_almost_equal( unp.nominal_values(processed), np.array([[1.0, 0.0], [0.0, 1.0], [0.5, 0.5], [0.25, 0.75]]), )
def test_normalize(self): """Test that by adding a normalization node we get a signal between 1 and 1.""" processor = DataProcessor( "memory", [AverageData(axis=1), SVD(), MinMaxNormalize()]) self.assertFalse(processor.is_trained) processor.train([self.data.data(idx) for idx in [0, 1]]) self.assertTrue(processor.is_trained) all_expected = np.array([[0.0, 1.0, 0.5, 0.75], [1.0, 0.0, 0.5, 0.25]]) # Test processing of all data processed = processor(self.data.data())[0] self.assertTrue(np.allclose(processed, all_expected))
def test_averaging_and_svd(self): """Test averaging followed by a SVD.""" processor = DataProcessor("memory", [AverageData(axis=1), SVD()]) # Test training using the calibration points self.assertFalse(processor.is_trained) processor.train([self.data.data(idx) for idx in [0, 1]]) self.assertTrue(processor.is_trained) # Test the excited state processed = processor(self.data.data(0)) np.testing.assert_array_almost_equal( unp.nominal_values(processed), self._sig_es, ) # Test the ground state processed = processor(self.data.data(1)) np.testing.assert_array_almost_equal( unp.nominal_values(processed), self._sig_gs, ) # Test the x90p rotation processed = processor(self.data.data(2)) np.testing.assert_array_almost_equal( unp.nominal_values(processed), self._sig_x90, ) np.testing.assert_array_almost_equal( unp.std_devs(processed), np.array([0.25, 0.25]), ) # Test the x45p rotation processed = processor(self.data.data(3)) np.testing.assert_array_almost_equal( unp.nominal_values(processed), self._sig_x45, ) np.testing.assert_array_almost_equal( unp.std_devs(processed), np.array([np.std([1, 1, 1, -1]) / np.sqrt(4.0) / 2] * 2), )
def test_train_svd_processor(self): """Test that we can train a DataProcessor with an SVD.""" processor = DataProcessor("memory", [SVD()]) self.assertFalse(processor.is_trained) iq_data = [[[0.0, 0.0], [0.0, 0.0]], [[1.0, 1.0], [-1.0, 1.0]], [[-1.0, -1.0], [1.0, -1.0]]] self.create_experiment(iq_data) processor.train(self.iq_experiment.data()) self.assertTrue(processor.is_trained) # Check that we can use the SVD iq_data = [[[2, 2], [2, -2]]] self.create_experiment(iq_data) processed, _ = processor(self.iq_experiment.data(0)) expected = np.array([-2, -2]) / np.sqrt(2) self.assertTrue(np.allclose(processed, expected))