def test_ce_k4_filtered(self): """Test for k=4 eigenvalues with filter""" # define filter criterion # pylint: disable=unused-argument def criterion(x, v, a_v): return v >= -1 algo = NumPyEigensolver(k=4, filter_criterion=criterion) result = algo.compute_eigenvalues(operator=self.qubit_op, aux_operators=[]) self.assertEqual(len(result.eigenvalues), 2) self.assertEqual(len(result.eigenstates), 2) self.assertEqual(result.eigenvalues.dtype, np.float64) np.testing.assert_array_almost_equal(result.eigenvalues, [-0.88272215, -0.22491125])
def get_solver(self, problem: BaseProblem) -> Eigensolver: """Returns a NumPyEigensolver with the desired filter Args: problem: a class encoding a problem to be solved. Returns: A NumPyEigensolver suitable to compute the ground state of the molecule transformed by ``transformation``. """ filter_criterion = self._filter_criterion if not filter_criterion and self._use_default_filter_criterion: filter_criterion = problem.get_default_filter_criterion() npe = NumPyEigensolver(filter_criterion=filter_criterion, k=self.k) return npe
def get_solver(self, transformation: Transformation) -> Eigensolver: """Returns a NumPyEigensolver with the desired filter Args: transformation: a fermionic/bosonic qubit operator transformation. Returns: A NumPyEigensolver suitable to compute the ground state of the molecule transformed by ``transformation``. """ filter_criterion = self._filter_criterion if not filter_criterion and self._use_default_filter_criterion: filter_criterion = transformation.get_default_filter_criterion() npe = NumPyEigensolver(filter_criterion=filter_criterion, k=self.k) return npe
def setUp(self): super().setUp() algorithm_globals.random_seed = 8 try: self.driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.75', unit=UnitsType.ANGSTROM, charge=0, spin=0, basis='sto3g') except QiskitNatureError: self.skipTest('PYSCF driver does not appear to be installed') self.reference_energies = [-1.8427016, -1.8427016 + 0.5943372, -1.8427016 + 0.95788352, -1.8427016 + 1.5969296] self.transformation = \ FermionicTransformation(qubit_mapping=FermionicQubitMappingType.JORDAN_WIGNER) solver = NumPyEigensolver() self.ref = solver self.quantum_instance = QuantumInstance(BasicAer.get_backend('statevector_simulator'), seed_transpiler=90, seed_simulator=12)
def setUp(self): super().setUp() algorithm_globals.random_seed = 8 try: self.driver = PySCFDriver(atom='H .0 .0 .0; H .0 .0 0.75', unit=UnitsType.ANGSTROM, charge=0, spin=0, basis='sto3g') except QiskitNatureError: self.skipTest('PYSCF driver does not appear to be installed') self.reference_energies = [-1.8427016, -1.8427016 + 0.5943372, -1.8427016 + 0.95788352, -1.8427016 + 1.5969296] self.qubit_converter = QubitConverter(JordanWignerMapper()) self.electronic_structure_problem = ElectronicStructureProblem(self.driver) solver = NumPyEigensolver() self.ref = solver self.quantum_instance = QuantumInstance(BasicAer.get_backend('statevector_simulator'), seed_transpiler=90, seed_simulator=12)
def test_ce_k2_1q(self, op): """Test for 1 qubit operator""" algo = NumPyEigensolver(k=2) result = algo.compute_eigenvalues(operator=op) np.testing.assert_array_almost_equal(result.eigenvalues, [-1, 1])
def test_ce_fail(self): """ Test no operator """ algo = NumPyEigensolver() with self.assertRaises(AlgorithmError): _ = algo.run()