qiskit-community / qiskit-aqua

Quantum Algorithms & Applications (**DEPRECATED** since April 2021 - see readme for more info)
https://qiskit.org/aqua
Apache License 2.0
572 stars 377 forks source link

Aqua version is set to 'None' #1073

Closed ncitron closed 4 years ago

ncitron commented 4 years ago

Information

What is the current behavior?

qiskit.__qiskit_version__

returns

 'qiskit-aer': '0.5.2',
 'qiskit-ignis': '0.3.2',
 'qiskit-ibmq-provider': '0.7.2',
 'qiskit-aqua': None,
 'qiskit': '0.19.5'}

Additionally, when running this code from the website:

from qiskit import Aer
from qiskit.aqua.components.oracles import LogicalExpressionOracle
from qiskit.aqua.algorithms import Grover

sat_cnf = """
c Example DIMACS 3-sat
p cnf 3 5
-1 -2 -3 0
1 -2 3 0
1 2 -3 0
1 -2 -3 0
-1 2 3 0
"""

backend = Aer.get_backend('qasm_simulator')
oracle = LogicalExpressionOracle(sat_cnf)
algorithm = Grover(oracle)
result = algorithm.run(backend)
print(result["result"])

returns this error, which I assume is related, but it confuses me that it managed to run the second import statement but not the third:

ImportError                               Traceback (most recent call last)
<ipython-input-15-65ef4b02ee87> in <module>
      1 from qiskit import Aer
      2 from qiskit.aqua.components.oracles import LogicalExpressionOracle
----> 3 from qiskit.aqua.algorithms import Grover
      4 
      5 sat_cnf = """

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/__init__.py in <module>
     75 from .aqua_globals import aqua_globals
     76 from .quantum_instance import QuantumInstance
---> 77 from .algorithms import QuantumAlgorithm
     78 from ._logging import (QiskitLogDomains,
     79                        get_logging_level,

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/__init__.py in <module>
    190 from .eigen_solvers import NumPyEigensolver, ExactEigensolver, EigensolverResult
    191 from .factorizers import Shor
--> 192 from .linear_solvers import HHL, NumPyLSsolver, ExactLSsolver
    193 from .minimum_eigen_solvers import (VQE, VQEResult, QAOA, IQPE, IQPEResult, QPE, QPEResult,
    194                                     ClassicalCPLEX, CPLEX_Ising, NumPyMinimumEigensolver,

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/linear_solvers/__init__.py in <module>
     15 """ Linear Solvers Package """
     16 
---> 17 from .hhl import HHL
     18 from .numpy_ls_solver import NumPyLSsolver, ExactLSsolver
     19 

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/linear_solvers/hhl.py in <module>
     24 from qiskit.aqua import QuantumInstance
     25 from qiskit.aqua.algorithms import QuantumAlgorithm
---> 26 from qiskit.ignis.verification.tomography import state_tomography_circuits, \
     27     StateTomographyFitter
     28 from qiskit.converters import circuit_to_dag

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/__init__.py in <module>
    102 """
    103 from .quantum_volume import qv_circuits, QVFitter
--> 104 from .randomized_benchmarking import (Clifford, BasicUtils, CliffordUtils,
    105                                       CNOTDihedral, DihedralUtils,
    106                                       randomized_benchmarking_seq,

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/randomized_benchmarking/__init__.py in <module>
     25 from .dihedral_utils import DihedralUtils
     26 from .circuits import randomized_benchmarking_seq
---> 27 from .fitters import (RBFitter, InterleavedRBFitter, PurityRBFitter,
     28                       CNOTDihedralRBFitter)
     29 from .rb_utils import (count_gates, gates_per_clifford,

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/randomized_benchmarking/fitters.py in <module>
     29 from qiskit import QiskitError
     30 from qiskit.quantum_info.analysis.average import average_data
---> 31 from ..tomography import marginal_counts
     32 from ...utils import build_counts_dict_from_list
     33 

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/__init__.py in <module>
     85 
     86 # Tomography data formatting
---> 87 from .fitters import StateTomographyFitter
     88 from .fitters import ProcessTomographyFitter
     89 from .fitters import GatesetTomographyFitter

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/__init__.py in <module>
     20 # Import tomography fitters
     21 from .state_fitter import StateTomographyFitter
---> 22 from .process_fitter import ProcessTomographyFitter
     23 from .gateset_fitter import GatesetTomographyFitter
     24 from .base_fitter import TomographyFitter

/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/process_fitter.py in <module>
     22 from qiskit.quantum_info.operators import Choi
     23 from .base_fitter import TomographyFitter
---> 24 from .cvx_fit import cvxpy, cvx_fit
     25 from .lstsq_fit import lstsq_fit
     26 

ImportError: cannot import name 'cvxpy' from 'qiskit.ignis.verification.tomography.fitters.cvx_fit' (/opt/anaconda3/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/cvx_fit.py)

Steps to reproduce the problem

Run the code listed above

What is the expected behavior?

qiskit-aqua should return an actual version.

t-imamichi commented 4 years ago

Thank you for your report. The error message says that Ignis uses cvxpy, but it is not installed. Workaround is to install cvxpy pip install cvxpy. Aqua's requirements.txt should include "qiskit-ignis[cvx]" according to Ignis readme. https://github.com/Qiskit/qiskit-ignis#extra-requirements

t-imamichi commented 4 years ago

I also found that if cvxpy is not installed, from qiskit import aqua fails as follow. This is the reason why aqua version is None.

from qiskit import aqua                                                                                                             
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
<ipython-input-3-99f58a3ecf11> in <module>
----> 1 from qiskit import aqua

~/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/__init__.py in <module>
     75 from .aqua_globals import aqua_globals
     76 from .quantum_instance import QuantumInstance
---> 77 from .algorithms import QuantumAlgorithm
     78 from ._logging import (QiskitLogDomains,
     79                        get_logging_level,

~/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/__init__.py in <module>
    190 from .eigen_solvers import NumPyEigensolver, ExactEigensolver, EigensolverResult
    191 from .factorizers import Shor
--> 192 from .linear_solvers import HHL, NumPyLSsolver, ExactLSsolver
    193 from .minimum_eigen_solvers import (VQE, VQEResult, QAOA, IQPE, IQPEResult, QPE, QPEResult,
    194                                     ClassicalCPLEX, CPLEX_Ising, NumPyMinimumEigensolver,

~/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/linear_solvers/__init__.py in <module>
     15 """ Linear Solvers Package """
     16 
---> 17 from .hhl import HHL
     18 from .numpy_ls_solver import NumPyLSsolver, ExactLSsolver
     19 

~/envs/qiskit/lib/python3.7/site-packages/qiskit/aqua/algorithms/linear_solvers/hhl.py in <module>
     24 from qiskit.aqua import QuantumInstance
     25 from qiskit.aqua.algorithms import QuantumAlgorithm
---> 26 from qiskit.ignis.verification.tomography import state_tomography_circuits, \
     27     StateTomographyFitter
     28 from qiskit.converters import circuit_to_dag

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/__init__.py in <module>
    102 """
    103 from .quantum_volume import qv_circuits, QVFitter
--> 104 from .randomized_benchmarking import (Clifford, BasicUtils, CliffordUtils,
    105                                       CNOTDihedral, DihedralUtils,
    106                                       randomized_benchmarking_seq,

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/randomized_benchmarking/__init__.py in <module>
     25 from .dihedral_utils import DihedralUtils
     26 from .circuits import randomized_benchmarking_seq
---> 27 from .fitters import (RBFitter, InterleavedRBFitter, PurityRBFitter,
     28                       CNOTDihedralRBFitter)
     29 from .rb_utils import (count_gates, gates_per_clifford,

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/randomized_benchmarking/fitters.py in <module>
     29 from qiskit import QiskitError
     30 from qiskit.quantum_info.analysis.average import average_data
---> 31 from ..tomography import marginal_counts
     32 from ...utils import build_counts_dict_from_list
     33 

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/__init__.py in <module>
     85 
     86 # Tomography data formatting
---> 87 from .fitters import StateTomographyFitter
     88 from .fitters import ProcessTomographyFitter
     89 from .fitters import GatesetTomographyFitter

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/__init__.py in <module>
     20 # Import tomography fitters
     21 from .state_fitter import StateTomographyFitter
---> 22 from .process_fitter import ProcessTomographyFitter
     23 from .gateset_fitter import GatesetTomographyFitter
     24 from .base_fitter import TomographyFitter

~/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/process_fitter.py in <module>
     22 from qiskit.quantum_info.operators import Choi
     23 from .base_fitter import TomographyFitter
---> 24 from .cvx_fit import cvxpy, cvx_fit
     25 from .lstsq_fit import lstsq_fit
     26 

ImportError: cannot import name 'cvxpy' from 'qiskit.ignis.verification.tomography.fitters.cvx_fit' (/Users/ima/envs/qiskit/lib/python3.7/site-packages/qiskit/ignis/verification/tomography/fitters/cvx_fit.py)
mtreinish commented 4 years ago

This is a duplicate of https://github.com/Qiskit/qiskit-ignis/issues/429 it unfortunately looks like an aqua bug because aqua imports ignis in places. But the 0.3.3 ignis release and the corresponding metapackage release 0.19.6 (which are working their way through CI and automation right now) should fix this.

mtreinish commented 4 years ago

The qiskit 0.19.6 metapackage release (which includes ignis 0.3.3) is released now it should correct this issue __qiskit_version__ returns:

{'qiskit-terra': '0.14.2', 'qiskit-aer': '0.5.2', 'qiskit-ignis': '0.3.3', 'qiskit-ibmq-provider': '0.7.2', 'qiskit-aqua': '0.7.3', 'qiskit': '0.19.6'}

and the test script returns: [1, -2, 3]

I'm going to close this as fixed now, please feel free to reopen it if I missed something.