Qiskit Terra v0.7 integration

* New folder structure matching Qiskit namespace convention
  Everything is under: qiskit.providers.aer
* Tests changed accordingly
* Documentation changed accordingly
This commit is contained in:
Juan Gomez 2018-12-12 18:12:14 +01:00
parent c07e5ef32a
commit 9ea697252e
50 changed files with 126 additions and 136 deletions

4
.github/CODEOWNERS vendored
View File

@ -11,11 +11,11 @@
* @chriseclectic @atilag
# Individual folders on root directory
/aer @chriseclectic @atilag
/qiskit @chriseclectic @atilag
/cmake @atilag
/doc @chriseclectic @atilag
/examples @chriseclectic @atilag
/legacy-build @chriseclectic @atilag
/contrib @chriseclectic @atilag
/test @chriseclectic @atilag
/src @chriseclectic @atilag

View File

@ -51,8 +51,8 @@ Pre-requisites
~~~~~~~~~~~~~~
Most of the required dependencies can be installed via ``pip``, using the
``requirements-dev.txt`` file that exists on every simulator addon directory, eg:
``pip install -r qiskit-aer/aer/requirements-dev.txt``.
``requirements-dev.txt`` file, eg:
``pip install -r requirements-dev.txt``.
As we are dealing with languages that build to native binaries, we will
need to have installed any of the `supported CMake build tools <https://cmake.org/cmake/help/v3.5/manual/cmake-generators.7.html>`_.
@ -183,7 +183,7 @@ In the case of building the Terra addon, you have to pass these flags after writ
.. code::
qiskit-aer/aer/qiskit_aer$ python ./setup.py bdist_wheel -- -DUSEFUL_FLAG=Value
qiskit-aer$ python ./setup.py bdist_wheel -- -DUSEFUL_FLAG=Value
These are the flags:
@ -237,7 +237,7 @@ and then run `unittest` Python framework.
.. code::
qiskit-aer$ python ./setup.py install
qiskit-aer$ python -m unittest discover -s test
qiskit-aer$ python -m unittest discover -s test -v
The integration tests for Terra addon are included in: `test/terra`.
@ -394,17 +394,3 @@ There are two main branches in the repository:
stable software ready for production environments.
- All the tags from the release versions are created from this branch.
Release cycle
~~~~~~~~~~~~~
TODO: TBD
What version should I use: development or stable?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
TODO: TBD
Documentation
-------------
TODO: TBD

View File

@ -20,45 +20,32 @@ The format is based on `Keep a Changelog`_.
Added
-----
- Added feature example (#662)
Changed
-------
- Some description related to a change made in the code. (#634)
Removed
-------
- etc (#661)
Fixed
-----
- etc (#663)
`0.1.0`_ - 2018-08-29
`0.1.0`_ - 2018-12-19
=====================
Added
-----
- Added ... description
Changed
-------
- Changed ... description
Removed
-------
- Removed ... description
Fixed
-----
- Fixed ... description
- QASM Simulator
- Statevector Simulator
- Unitary Simulator
- Noise models
- Terra integration
- Standalone Simulators support
.. _UNRELEASED: https://github.com/Qiskit/qiskit-terra/compare/0.4.0...HEAD

View File

@ -62,7 +62,7 @@ if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
# In order to build for MacOSX 10.7 and above with Clang, we need to force the "deployment target" to 10.7
# and force using libc++ instead of the default for this target: libstdc++ otherwise we could not
# use C++11/14
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.7" CACHE STRING "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9" CACHE STRING "" FORCE)
enable_cxx_compiler_flag_if_supported("-stdlib=libc++")
endif()
@ -139,7 +139,6 @@ endif()
if(OPENMP_FOUND)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${OpenMP_EXE_LINKER_FLAGS}")
#if(APPLE AND CMAKE_CXX_COMPILER_ID MATCHES "Clang")
if(APPLE)
# On Apple and clang, we do need to link against the library
set(OPENMP_EXTERNAL_LIB "${OpenMP_${OpenMP_CXX_LIB_NAMES}_LIBRARY}")
@ -195,5 +194,5 @@ endif()
# Cython build is only enabled if building through scikit-build.
if(SKBUILD)
add_subdirectory(qiskit_aer/backends/wrappers)
add_subdirectory(qiskit/providers/aer/backends/wrappers)
endif()

View File

@ -1 +1 @@
include qiskit_aer/VERSION.txt
include qiskit/providers/aer/VERSION.txt

View File

@ -36,8 +36,7 @@ qiskit-aer$ pip install dist/qiskit_aer-0.1.0-cp36-cp36m-linux_x86_64.whl
We are all set! Now we ready to start using the simulator in our python code:
```python
import qiskit_aer as aer
from qiskit_aer import Aer # Imports the Aer Provider
from qiskit import Aer # Imports the Aer Provider
Aer.backends() # List Aer backends
Aer.backends() # List of the backends
```

3
cmake/README.md Normal file
View File

@ -0,0 +1,3 @@
In order to build static binaries, we need to copy FindBLAS.cmake.fix-static-linking to:
~/anaconda3/envs/<MyAerEnv>/lib/python3.<X>/site-packages/cmake/data/share/cmake-3.12/Modules

View File

@ -0,0 +1,21 @@
# -*- coding: utf-8 -*-
# Copyright 2018, IBM.
#
# This source code is licensed under the Apache License, Version 2.0 found in
# the LICENSE.txt file in the root directory of this source tree.
"""Aer Backends."""
from .aerprovider import AerProvider
from .aerjob import AerJob
from .backends import *
#from .backends.qasm_simulator import QasmSimulator
#from .backends.statevector_simulator import StatevectorSimulator
#from .backends.unitary_simulator import UnitarySimulator
from .noise import *
from .utils import *
from .version import __version__
# Global instance to be used as the entry point for convenience.
Aer = AerProvider() # pylint: disable=invalid-name

View File

@ -13,7 +13,7 @@ import logging
import sys
import functools
from qiskit.backends import BaseJob, JobStatus, JobError
from qiskit.providers import BaseJob, JobStatus, JobError
from qiskit.qobj import validate_qobj_against_schema
logger = logging.getLogger(__name__)

View File

@ -7,23 +7,23 @@
# pylint: disable=invalid-name, bad-continuation
"""Provider for Qiskit Aer backends."""
"""Provider for Qiskit Aer providers."""
from qiskit.backends import BaseProvider
from qiskit.backends.providerutils import filter_backends
from qiskit.providers import BaseProvider
from qiskit.providers.providerutils import filter_backends
from .qasm_simulator import QasmSimulator
from .statevector_simulator import StatevectorSimulator
from .unitary_simulator import UnitarySimulator
from .backends.qasm_simulator import QasmSimulator
from .backends.statevector_simulator import StatevectorSimulator
from .backends.unitary_simulator import UnitarySimulator
class AerProvider(BaseProvider):
"""Provider for Qiskit Aer backends."""
"""Provider for Qiskit Aer providers."""
def __init__(self, *args, **kwargs):
super().__init__(args, kwargs)
# Populate the list of Aer simulator backends.
# Populate the list of Aer simulator providers.
self._backends = [QasmSimulator(provider=self),
StatevectorSimulator(provider=self),
UnitarySimulator(provider=self)]

View File

@ -7,11 +7,7 @@
"""Aer Backends."""
from .aerprovider import AerProvider
from .aerjob import AerJob
from .qasm_simulator import QasmSimulator
from .statevector_simulator import StatevectorSimulator
from .unitary_simulator import UnitarySimulator
# Global instance to be used as the entry point for convenience.
Aer = AerProvider() # pylint: disable=invalid-name

View File

@ -16,13 +16,13 @@ import time
import uuid
from numpy import ndarray
from qiskit.backends import BaseBackend
from qiskit.backends.models import BackendStatus
from qiskit.providers import BaseBackend
from qiskit.providers.models import BackendStatus
from qiskit.qobj import QobjConfig
from qiskit.result import Result
from .aerjob import AerJob
from .aersimulatorerror import AerSimulatorError
from ..aerjob import AerJob
from ..aersimulatorerror import AerSimulatorError
# Logger
logger = logging.getLogger(__name__)
@ -53,7 +53,7 @@ class AerBackend(BaseBackend):
"""Qiskit Aer Backend class."""
def __init__(self, controller, configuration, provider=None):
"""Aer class for backends.
"""Aer class for providers.
This method should initialize the module and its configuration, and
raise an exception if a component of the module is

View File

@ -11,11 +11,10 @@ Qiskit Aer qasm simulator backend.
from math import log2
from qiskit._util import local_hardware_info
from qiskit.backends.models import BackendConfiguration
from ..version import __version__
from qiskit.providers.models import BackendConfiguration
from .aerbackend import AerBackend
from qasm_controller_wrapper import qasm_controller_execute
from ..version import __version__
class QasmSimulator(AerBackend):

View File

@ -14,11 +14,10 @@ Qiskit Aer statevector simulator backend.
import logging
from math import log2
from qiskit._util import local_hardware_info
from qiskit.backends.models import BackendConfiguration
from ..version import __version__
from qiskit.providers.models import BackendConfiguration
from .aerbackend import AerBackend
from statevector_controller_wrapper import statevector_controller_execute
from ..version import __version__
# Logger
logger = logging.getLogger(__name__)

View File

@ -14,12 +14,11 @@ Qiskit Aer Unitary Simulator Backend.
import logging
from math import log2
from qiskit._util import local_hardware_info
from qiskit.backends.models import BackendConfiguration
from ..version import __version__
from qiskit.providers.models import BackendConfiguration
from ..aersimulatorerror import AerSimulatorError
from .aerbackend import AerBackend
from .aersimulatorerror import AerSimulatorError
from unitary_controller_wrapper import unitary_controller_execute
from ..version import __version__
# Logger
logger = logging.getLogger(__name__)

View File

@ -6,7 +6,7 @@
# the LICENSE.txt file in the root directory of this source tree.
"""
Simplified noise models for devices backends.
Simplified noise models for devices providers.
"""
from numpy import inf, exp

View File

@ -8,6 +8,6 @@
import os
from pathlib import Path
ROOT_DIR = Path(os.path.dirname(os.path.abspath(__file__)))
ROOT_DIR = os.path.dirname(__file__)
with open(os.path.join(ROOT_DIR, "VERSION.txt"), "r") as version_file:
__version__ = version_file.read().strip()

View File

@ -1,14 +0,0 @@
# -*- coding: utf-8 -*-
# Copyright 2018, IBM.
#
# This source code is licensed under the Apache License, Version 2.0 found in
# the LICENSE.txt file in the root directory of this source tree.
import os
from pathlib import Path
from .backends import Aer
from . import backends
from . import noise
from .version import __version__

View File

@ -2,15 +2,31 @@ import os
from skbuild import setup
from setuptools import find_packages
ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
"qiskit_aer")
with open(os.path.join(ROOT_DIR, "VERSION.txt"), "r") as version_file:
requirements = [
"numpy>=1.13"
]
VERSION_PATH = os.path.join(os.path.dirname(__file__),
"qiskit", "providers", "aer", "VERSION.txt")
with open(VERSION_PATH, "r") as version_file:
VERSION = version_file.read().strip()
def find_qiskit_aer_packages():
location = 'qiskit/providers'
prefix = 'qiskit.providers'
aer_packages = find_packages(where=location)
pkg_list = list(
map(lambda package_name: '{}.{}'.format(prefix, package_name),
aer_packages)
)
return pkg_list
setup(
name='qiskit_aer',
name='qiskit-aer',
version=VERSION,
packages=find_packages(),
packages=find_qiskit_aer_packages(),
cmake_source_dir='.',
description="Qiskit Aer - High performance simulators for Qiskit",
author="AER Development Team",
@ -29,7 +45,7 @@ setup(
"Programming Language :: Python :: 3.6",
"Topic :: Scientific/Engineering",
],
install_requires=requirements,
include_package_data=True,
cmake_args=["-DCMAKE_OSX_DEPLOYMENT_TARGET:STRING=10.7"],
keywords="qiskit aer simulator quantum addon backend"
)

View File

@ -1,5 +1,5 @@
from test.terra.utils import common
from qiskit_aer.utils import qobj_utils
from qiskit.providers.aer.utils import qobj_utils
import unittest
import numpy as np
import math
@ -10,7 +10,7 @@ from qstructs import DensityMatrix, QuantumState, ProbabilityDistribution
from qstructs import is_close, get_extended_ops, randcomplex
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import compile
from qiskit_aer.backends import QasmSimulator
from qiskit.providers.aer.backends import QasmSimulator
from qiskit.qobj import QobjItem
class TestByReferenceModel(common.QiskitAerTestCase):

View File

@ -1,5 +1,5 @@
from test.terra.utils import common
from qiskit_aer.utils import qobj_utils
from qiskit.providers.aer.utils import qobj_utils
import unittest
import numpy as np
import math
@ -10,7 +10,7 @@ from qstructs import DensityMatrix, QuantumState, ProbabilityDistribution
from qstructs import is_close, get_extended_ops, randcomplex
from qiskit import QuantumCircuit, ClassicalRegister, QuantumRegister
from qiskit import compile
from qiskit_aer.backends import QasmSimulator
from qiskit.providers.aer.backends import QasmSimulator
from qiskit.qobj import QobjItem
class TestMatrixSnapshot(common.QiskitAerTestCase):

View File

@ -10,12 +10,12 @@ import unittest
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from qiskit import compile
from qiskit_aer.noise import NoiseModel, QuantumError
from qiskit_aer.backends import QasmSimulator
from qiskit_aer.noise.errors.standard_errors import pauli_error
from qiskit_aer.noise.errors.standard_errors import amplitude_damping_error
from qiskit_aer.utils.qobj_utils import qobj_measure_item
from qiskit_aer.utils.qobj_utils import qobj_append_item
from qiskit.providers.aer.noise import NoiseModel, QuantumError
from qiskit.providers.aer import QasmSimulator
from qiskit.providers.aer.noise.errors.standard_errors import pauli_error
from qiskit.providers.aer.noise.errors.standard_errors import amplitude_damping_error
from qiskit.providers.aer.utils.qobj_utils import qobj_measure_item
from qiskit.providers.aer.utils.qobj_utils import qobj_append_item
class TestNoise(common.QiskitAerTestCase):

View File

@ -20,7 +20,7 @@ from test.terra.utils import ref_algorithms
from test.terra.utils import ref_unitary_gate
import unittest
from qiskit import execute
from qiskit_aer.backends import QasmSimulator
from qiskit.providers.aer import QasmSimulator
# TODO: Enable minimal basis (U,X) tests once bugs in terra are fixed

View File

@ -9,9 +9,9 @@ from test.terra.utils import common
import unittest
import numpy as np
from qiskit_aer.noise.noise_utils import standard_gate_unitary
from qiskit_aer.noise import QuantumError
from qiskit_aer.noise.aernoiseerror import AerNoiseError
from qiskit.providers.aer.noise.noise_utils import standard_gate_unitary
from qiskit.providers.aer.noise import QuantumError
from qiskit.providers.aer.noise.aernoiseerror import AerNoiseError
# TODO:
# * Test compose error for different qubit number

View File

@ -8,8 +8,8 @@
from test.terra.utils import common
import unittest
from qiskit_aer.noise import ReadoutError
from qiskit_aer.noise.aernoiseerror import AerNoiseError
from qiskit.providers.aer.noise import ReadoutError
from qiskit.providers.aer.noise.aernoiseerror import AerNoiseError
class TestReadoutError(common.QiskitAerTestCase):

View File

@ -10,17 +10,17 @@ from test.terra.utils import common
import unittest
from qiskit.quantum_info.operators.pauli import Pauli
from qiskit_aer.noise.noise_utils import standard_gate_unitary
from qiskit_aer.noise.aernoiseerror import AerNoiseError
from qiskit_aer.noise.errors.standard_errors import kraus_error
from qiskit_aer.noise.errors.standard_errors import mixed_unitary_error
from qiskit_aer.noise.errors.standard_errors import coherent_unitary_error
from qiskit_aer.noise.errors.standard_errors import pauli_error
from qiskit_aer.noise.errors.standard_errors import depolarizing_error
from qiskit_aer.noise.errors.standard_errors import thermal_relaxation_error
from qiskit_aer.noise.errors.standard_errors import phase_amplitude_damping_error
from qiskit_aer.noise.errors.standard_errors import amplitude_damping_error
from qiskit_aer.noise.errors.standard_errors import phase_damping_error
from qiskit.providers.aer.noise.noise_utils import standard_gate_unitary
from qiskit.providers.aer.noise.aernoiseerror import AerNoiseError
from qiskit.providers.aer.noise.errors.standard_errors import kraus_error
from qiskit.providers.aer.noise.errors.standard_errors import mixed_unitary_error
from qiskit.providers.aer.noise.errors.standard_errors import coherent_unitary_error
from qiskit.providers.aer.noise.errors.standard_errors import pauli_error
from qiskit.providers.aer.noise.errors.standard_errors import depolarizing_error
from qiskit.providers.aer.noise.errors.standard_errors import thermal_relaxation_error
from qiskit.providers.aer.noise.errors.standard_errors import phase_amplitude_damping_error
from qiskit.providers.aer.noise.errors.standard_errors import amplitude_damping_error
from qiskit.providers.aer.noise.errors.standard_errors import phase_damping_error
# TODO: Test Kraus thermal relaxation error by comparing to amplitude damping channel

View File

@ -19,7 +19,7 @@ from test.terra.utils import ref_non_clifford
from test.terra.utils import ref_unitary_gate
import unittest
from qiskit import execute
from qiskit_aer.backends import StatevectorSimulator
from qiskit.providers.aer import StatevectorSimulator
# TODO: Enable minimal basis (U,X) tests once bugs in terra are fixed
# TODO: Enable conditional tests once terra supports bfunc conditionals

View File

@ -16,7 +16,7 @@ from test.terra.utils import ref_non_clifford
from test.terra.utils import ref_unitary_gate
import unittest
from qiskit import execute
from qiskit_aer.backends import UnitarySimulator
from qiskit.providers.aer import UnitarySimulator
# TODO: Enable minimal basis (U,X) tests once bugs in terra are fixed

View File

@ -24,7 +24,7 @@ from numpy.linalg import norm
from qiskit.tools.qi.qi import state_fidelity
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
from qiskit_aer import __path__ as main_path
from qiskit.providers.aer import __path__ as main_path
class Path(Enum):

View File

@ -16,10 +16,10 @@ from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit
# to test multi-qubit measurements which must be implemeted
# direclty by qobj instructions until terra compiler supports them
from qiskit import compile
from qiskit_aer.backends import QasmSimulator
from qiskit_aer.utils.qobj_utils import qobj_insert_item
from qiskit_aer.utils.qobj_utils import qobj_measure_item
from qiskit_aer.utils.qobj_utils import qobj_iden_item
from qiskit.providers.aer.backends import QasmSimulator
from qiskit.providers.aer.utils.qobj_utils import qobj_insert_item
from qiskit.providers.aer.utils.qobj_utils import qobj_measure_item
from qiskit.providers.aer.utils.qobj_utils import qobj_iden_item
# ==========================================================================

View File

@ -13,10 +13,10 @@ Test circuits and reference outputs for measure instruction.
import numpy as np
from qiskit import QuantumRegister, ClassicalRegister, QuantumCircuit, compile
from qiskit_aer.backends import QasmSimulator
from qiskit_aer.utils.qobj_utils import qobj_unitary_item
from qiskit_aer.utils.qobj_utils import qobj_insert_item
from qiskit_aer.utils.qobj_utils import qobj_measure_item
from qiskit.providers.aer.backends import QasmSimulator
from qiskit.providers.aer.utils.qobj_utils import qobj_unitary_item
from qiskit.providers.aer.utils.qobj_utils import qobj_insert_item
from qiskit.providers.aer.utils.qobj_utils import qobj_measure_item
# ==========================================================================